home *** CD-ROM | disk | FTP | other *** search
/ Dynamic HTML Construction Kit / Dynamic HTML Construction Kit.iso / earthlink / nscomm / java40.jar / java / util / BitSet.class (.txt) next >
Encoding:
Java Class File  |  1997-11-03  |  3.0 KB  |  335 lines

  1. package java.util;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public final class BitSet implements Cloneable, Serializable {
  6.    private static final int BITS_PER_UNIT = 6;
  7.    private static final int MASK = 63;
  8.    private long[] bits;
  9.    private static final long serialVersionUID = 7997698588986878753L;
  10.  
  11.    private static int subscript(int var0) {
  12.       return var0 >> 6;
  13.    }
  14.  
  15.    private static int bitIndex(int var0) {
  16.       return (var0 << 6) + 63;
  17.    }
  18.  
  19.    public BitSet() {
  20.       this(64);
  21.    }
  22.  
  23.    public BitSet(int var1) {
  24.       if (var1 < 0) {
  25.          throw new NegativeArraySizeException(Integer.toString(var1));
  26.       } else {
  27.          if (var1 + 63 < 0) {
  28.             var1 = 2147483584;
  29.          }
  30.  
  31.          this.bits = new long[subscript(var1 + 63)];
  32.       }
  33.    }
  34.  
  35.    private void ensureCapacity(int var1) {
  36.       int var2 = subscript(var1) + 1;
  37.       if (var2 > this.bits.length) {
  38.          int var3 = Math.max(2 * this.bits.length, var2);
  39.          long[] var4 = new long[var3];
  40.          System.arraycopy(this.bits, 0, var4, 0, this.bits.length);
  41.          this.bits = var4;
  42.       }
  43.  
  44.    }
  45.  
  46.    public void set(int var1) {
  47.       if (var1 < 0) {
  48.          throw new IndexOutOfBoundsException(Integer.toString(var1));
  49.       } else {
  50.          synchronized(this){}
  51.  
  52.          try {
  53.             this.ensureCapacity(var1);
  54.             long[] var10000 = this.bits;
  55.             int var10001 = subscript(var1);
  56.             var10000[var10001] |= 1L << (var1 & 63);
  57.          } catch (Throwable var4) {
  58.             throw var4;
  59.          }
  60.  
  61.       }
  62.    }
  63.  
  64.    public void clear(int var1) {
  65.       if (var1 < 0) {
  66.          throw new IndexOutOfBoundsException(Integer.toString(var1));
  67.       } else {
  68.          synchronized(this){}
  69.  
  70.          try {
  71.             this.ensureCapacity(var1);
  72.             long[] var10000 = this.bits;
  73.             int var10001 = subscript(var1);
  74.             var10000[var10001] &= ~(1L << (var1 & 63));
  75.          } catch (Throwable var4) {
  76.             throw var4;
  77.          }
  78.  
  79.       }
  80.    }
  81.  
  82.    public boolean get(int var1) {
  83.       if (var1 < 0) {
  84.          throw new IndexOutOfBoundsException(Integer.toString(var1));
  85.       } else {
  86.          boolean var2 = false;
  87.          synchronized(this){}
  88.  
  89.          try {
  90.             int var5 = subscript(var1);
  91.             if (var5 < this.bits.length) {
  92.                var2 = (this.bits[var5] & 1L << (var1 & 63)) != 0L;
  93.             }
  94.          } catch (Throwable var7) {
  95.             throw var7;
  96.          }
  97.  
  98.          return var2;
  99.       }
  100.    }
  101.  
  102.    public void and(BitSet var1) {
  103.       if (this != var1) {
  104.          BitSet var2 = this;
  105.          BitSet var3 = var1;
  106.          if (System.identityHashCode(this) > System.identityHashCode(var1)) {
  107.             var2 = var1;
  108.             var3 = this;
  109.          }
  110.  
  111.          synchronized(var2) {
  112.             synchronized(var3){}
  113.  
  114.             try {
  115.                int var8 = this.bits.length;
  116.                int var9 = var1.bits.length;
  117.                int var10 = Math.min(var8, var9);
  118.  
  119.                long[] var16;
  120.                for(int var11 = var10; var11-- > 0; var16[var11] &= var1.bits[var11]) {
  121.                   var16 = this.bits;
  122.                }
  123.  
  124.                while(var10 < var8) {
  125.                   this.bits[var10] = 0L;
  126.                   ++var10;
  127.                }
  128.             } catch (Throwable var14) {
  129.                throw var14;
  130.             }
  131.          }
  132.  
  133.       }
  134.    }
  135.  
  136.    // $FF: renamed from: or (java.util.BitSet) void
  137.    public void method_0(BitSet var1) {
  138.       if (this != var1) {
  139.          BitSet var2 = this;
  140.          BitSet var3 = var1;
  141.          if (System.identityHashCode(this) > System.identityHashCode(var1)) {
  142.             var2 = var1;
  143.             var3 = this;
  144.          }
  145.  
  146.          synchronized(var2) {
  147.             synchronized(var3){}
  148.  
  149.             try {
  150.                int var8 = var1.bits.length;
  151.                if (var8 > 0) {
  152.                   this.ensureCapacity(bitIndex(var8 - 1));
  153.                }
  154.  
  155.                long[] var14;
  156.                for(int var9 = var8; var9-- > 0; var14[var9] |= var1.bits[var9]) {
  157.                   var14 = this.bits;
  158.                }
  159.             } catch (Throwable var12) {
  160.                throw var12;
  161.             }
  162.          }
  163.  
  164.       }
  165.    }
  166.  
  167.    public void xor(BitSet var1) {
  168.       BitSet var2 = this;
  169.       BitSet var3 = var1;
  170.       if (System.identityHashCode(this) > System.identityHashCode(var1)) {
  171.          var2 = var1;
  172.          var3 = this;
  173.       }
  174.  
  175.       synchronized(var2) {
  176.          synchronized(var3){}
  177.  
  178.          try {
  179.             int var8 = var1.bits.length;
  180.             if (var8 > 0) {
  181.                this.ensureCapacity(bitIndex(var8 - 1));
  182.             }
  183.  
  184.             long[] var14;
  185.             for(int var9 = var8; var9-- > 0; var14[var9] ^= var1.bits[var9]) {
  186.                var14 = this.bits;
  187.             }
  188.          } catch (Throwable var12) {
  189.             throw var12;
  190.          }
  191.       }
  192.  
  193.    }
  194.  
  195.    public int hashCode() {
  196.       long var1 = 1234L;
  197.       synchronized(this){}
  198.  
  199.       try {
  200.          int var5 = this.bits.length;
  201.  
  202.          while(true) {
  203.             --var5;
  204.             if (var5 < 0) {
  205.                return (int)(var1 >> 32 ^ var1);
  206.             }
  207.  
  208.             var1 ^= this.bits[var5] * (long)(var5 + 1);
  209.          }
  210.       } catch (Throwable var7) {
  211.          throw var7;
  212.       }
  213.    }
  214.  
  215.    public int size() {
  216.       return this.bits.length << 6;
  217.    }
  218.  
  219.    public boolean equals(Object var1) {
  220.       if (var1 != null && var1 instanceof BitSet) {
  221.          if (this == var1) {
  222.             return true;
  223.          } else {
  224.             BitSet var2 = (BitSet)var1;
  225.             BitSet var3 = this;
  226.             BitSet var4 = var2;
  227.             if (System.identityHashCode(this) > System.identityHashCode(var2)) {
  228.                var3 = var2;
  229.                var4 = this;
  230.             }
  231.  
  232.             boolean var20;
  233.             synchronized(var3) {
  234.                synchronized(var4){}
  235.  
  236.                try {
  237.                   int var10 = this.bits.length;
  238.                   int var11 = var2.bits.length;
  239.                   int var12 = Math.min(var10, var11);
  240.                   int var13 = var12;
  241.  
  242.                   while(var13-- > 0) {
  243.                      if (this.bits[var13] != var2.bits[var13]) {
  244.                         var20 = false;
  245.                         return var20;
  246.                      }
  247.                   }
  248.  
  249.                   if (var10 <= var12) {
  250.                      if (var11 <= var12) {
  251.                         return true;
  252.                      }
  253.  
  254.                      int var14 = var11;
  255.  
  256.                      do {
  257.                         if (var14-- <= var12) {
  258.                            return true;
  259.                         }
  260.                      } while(var2.bits[var14] == 0L);
  261.  
  262.                      var20 = false;
  263.                      return var20;
  264.                   }
  265.  
  266.                   int var21 = var10;
  267.  
  268.                   do {
  269.                      if (var21-- <= var12) {
  270.                         return true;
  271.                      }
  272.                   } while(this.bits[var21] == 0L);
  273.  
  274.                   var20 = false;
  275.                } catch (Throwable var17) {
  276.                   throw var17;
  277.                }
  278.             }
  279.  
  280.             return var20;
  281.          }
  282.       } else {
  283.          return false;
  284.       }
  285.    }
  286.  
  287.    public Object clone() {
  288.       BitSet var1 = null;
  289.       synchronized(this){}
  290.  
  291.       try {
  292.          try {
  293.             var1 = (BitSet)super.clone();
  294.          } catch (CloneNotSupportedException var5) {
  295.             throw new InternalError();
  296.          }
  297.  
  298.          var1.bits = new long[this.bits.length];
  299.          System.arraycopy(this.bits, 0, var1.bits, 0, var1.bits.length);
  300.       } catch (Throwable var6) {
  301.          throw var6;
  302.       }
  303.  
  304.       return var1;
  305.    }
  306.  
  307.    public String toString() {
  308.       StringBuffer var1 = new StringBuffer();
  309.       boolean var2 = false;
  310.       var1.append('{');
  311.       synchronized(this){}
  312.  
  313.       try {
  314.          int var5 = this.size();
  315.  
  316.          for(int var6 = 0; var6 < var5; ++var6) {
  317.             if (this.get(var6)) {
  318.                if (var2) {
  319.                   var1.append(", ");
  320.                } else {
  321.                   var2 = true;
  322.                }
  323.  
  324.                var1.append(var6);
  325.             }
  326.          }
  327.       } catch (Throwable var8) {
  328.          throw var8;
  329.       }
  330.  
  331.       var1.append('}');
  332.       return var1.toString();
  333.    }
  334. }
  335.